Code 128 條碼
Code 128 編碼方式是屬於比較複雜的一種條碼,應用起來比較有彈性,在1981年開始流行起來。
Code 128 條碼主要特性有:
1.有A,B,C三種不同的編碼型態,可以提供128個標準的ASCII code字元.
包括: 0~9的數字,英文大小寫,各種特殊符號,以及控制碼。
2.有一檢查碼,可自由決定是否要列印。
3.在可藉由A、B、C三種不同編碼型態交叉使用,以縮短條碼的長度。
4.可允許由左至右,或由右至左,雙向掃瞄。
Code 128 條碼基本結構
圖一
Code 128 條碼內容主要有四個部份:
1.起始碼 (start code)
2.資料碼 (data code)
3.結束碼 (end code)
4.檢查碼 (check code):可有可無
Code 128 條碼字元編碼方式
Code 128 每一字元條碼結構由3條Bar及3條Space所組成.又細分為11等分,組成不同粗細比。字元最粗的線條最高可達最細的4倍。
例如:起始碼Code A
11010000100 條碼裡頭space最粗是最細線條的4倍
再舉個例子,我們以B型態中的特殊符號'/'說明
10111001100 最粗的bar是最細bar的3倍
起始碼與結束碼編碼方式
Code 128 條碼有A、B、C三種不同型態編碼的字元表,要選擇哪一種字元表取決於特殊控制碼Code A,Code B與Code C。
起始碼也有三種編碼型態:Code A,Code B,Code C
當起始碼為Code A時,後面的條碼資料則選擇A型態字元表編碼邏輯。
而起始碼為Code B時,後面的條碼資料則選擇B型態字元表編碼邏輯。
若全部為數字時可選擇Code C型態字元表編碼邏輯,以縮短條碼的列印長度。
每一類型的字元表內也有Code A,Code B,Code C,但條碼編碼邏輯與起始碼不同,請參閱【Code 128 條碼字元表】
接下來我們看三種起始碼的條碼編碼方式
Code A條碼資料為11010000100,條碼圖案為 ,相對值為103。
Code B條碼資料為11010010000,條碼圖案為 ,相對值為104。
Code C條碼資料為11010011100,條碼圖案為 ,相對值為105。
結束碼編碼方式
A,B,C三種不同型態編碼方式,結束碼均固定為1100011101011,條碼圖案為,相對值為106。
Code 128 條碼三種字元表型態編碼差異說明
1.A型態字元表,支援的資料碼包含:標準ASCII=0 ~ ASCII=95等字元及控制碼部份,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的A型態。(ASCII=0~31為控制碼,ASCII=32~95為可見字元。)
2.B型態字元表包含:標準ASCII=32 ~ ASCII=127等字元,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的B型態。
3.C型態字元表主要支援數字00~99的編碼使用,若使用長數字的資料時,可以用C型態編碼,可縮短條碼列印的長度。數字00~99加上3個特殊控制字元,總共103個字元。
特殊控制字元說明
1.Code A:表示後面的字元編碼型態要使用A table。
2.Code B:表示後面的字元編碼型態要使用B table。
3.Code C:表示後面的字元編碼型態要使用C table。
4.Shift:等於Shift鍵的作用。
5.FNC 1:等於F1鍵的作用。
6.FNC 2:等於F2鍵的作用。
7.FNC 3:等於F3鍵的作用。
8.FNC 3:等於F4鍵的作用。
Code 128 條碼應用實例說明
1.Code C型態應用時機
我們舉以下例子,如果資料內如為數字0123456789,使用Code A及Code C條碼列印長度的差異,Code C條碼列印出來的長度較短。
Code A型態時的編碼如下圖
Code C型態時的編碼如下圖
2.Code A及Code C型態混合應用時機
前面4個字元ABCB使用A table編碼,所以起始碼以Code A開始,然後在數字0123456789之前加上Code C特殊控制碼,則後面的數字會轉換成C table編碼,如此就可以縮短條碼列印的長度。
Code 128 條碼檢查碼的計算方式
我們以起始碼Code B編碼的Andy’s條碼來說明
步驟一.計算出S值
S=103+(d1*1)+(d2*2)+ (d3*3)+ (d4*4)+ …
d1:表示資料第1個字元
因為起始碼為Code B,所以字元相對值使用B table。
則S=103+(33*1)+(78*2)+(68*3)+(89*4)+(7*5)+(83*6)=103+33+156+204+356+35+498=1385
步驟二.將S值除以103,取其餘數M值。
1385/103=13…46 取餘數M=46
步驟三.將M值46代入B table找到相對值的字元為N,即檢查碼為N。
提醒:
若資料碼裡有Code A,Code B,Code C型態轉換,檢查碼代入的依據均以起始碼相對應的字元組型態為主。
Code 128 條碼字元表